package com.study.inoutputStream;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.junit.Test;

/**
* @Name: BufferedInOutputStreamTest
* @Description: 缓冲区类（高效类）字节输入输出流测试类
* 说明：
* 	BufferedOutputStream类：该类实现缓冲的输出流。通过设置这种输出流，应用程序就可以将各个字节写入底层输出流中，而不必针对每次字节写入调用底层系统。 
* 	构造方法：构造方法可以指定缓冲区的大小，不过一般用不上，默认大小就够用了。
* 		BufferedOutputStream(OutputStream out)  创建一个新的缓冲输出流，以将数据写入指定的底层输出流。
* 		BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流，以将具有指定缓冲区大小的数据写入指定的底层输出流。
* 	BufferedInputStream类：该类实现缓冲的输入流。
* 	构造方法：
* 		BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数，即输入流 in，以便将来使用。
* 		BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数，即输入流 in，以便将来使用。
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-1-15 下午4:55:30 
* @Version: V1.0
 */
public class BufferedInOutputStreamTest {
	
	/**
	* @Name: bufferedOutputStream01
	* @Description: 高效字节输出流测试方法
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-15 下午5:13:00
	* @Parameters: @throws IOException
	* @Return: void
	 */
	@Test
	public void bufferedOutputStream() throws IOException {
		//创建文件字节输出流对象,并将其包装成高效字节输出流对象
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("fos.txt")) ;
		//写数据
		String data = "hello, buffered" ;
		bos.write(data.getBytes()) ;
		//释放资源
		bos.close() ;
	}
	
	/**
	* @Name: bufferedInputStream01
	* @Description: 高效字节输入流测试方法（每次读取一个字节的数据）
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-15 下午5:16:56
	* @Parameters: @throws IOException
	* @Return: void
	 */
	@Test
	public void bufferedInputStream01() throws IOException {
		//创建文件字节输入流对象,并将其包装成高效字节输入流对象
		BufferedInputStream bos = new BufferedInputStream(new FileInputStream("fos.txt")) ;
		//读数据
		int b = 0 ;
		while((b = bos.read()) != -1) {
			System.out.print((char)b);
		}
		//释放资源
		bos.close() ;
	}
	
	/*@Name: bufferedInputStream01
	* @Description: 高效字节输入流测试方法（每次读取一个字节数组）
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-15 下午5:16:56
	* @Parameters: @throws IOException
	* @Return: void
	 */
	@Test
	public void bufferedInputStream02() throws IOException {
		//创建文件字节输入流对象,并将其包装成高效字节输入流对象
		BufferedInputStream bos = new BufferedInputStream(new FileInputStream("fos.txt")) ;
		//读数据
		byte[] buf = new byte[1024] ;
		int len = 0 ;
		while((len = bos.read(buf)) != -1) {
			System.out.print(new String(buf, 0, len));
		}
		//释放资源
		bos.close() ;
	}
	

}
